/*
 * 
 * Copyright 2010 David H Pollack
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License. 
 * 
 * 
 */

package com.dhpollack.rotogss.servlets;

import static com.google.appengine.api.labs.taskqueue.TaskOptions.Builder.url;

import java.io.IOException;
import java.util.Map;
import java.util.Set;

import javax.jdo.JDOObjectNotFoundException;
import javax.jdo.PersistenceManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dhpollack.rotogss.data.YahooGames;
import com.dhpollack.rotogss.data.YahooLeagues;
import com.dhpollack.rotogss.helper.PMF;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.labs.taskqueue.Queue;
import com.google.appengine.api.labs.taskqueue.QueueFactory;

/**
 * @author davidpl
 *
 */
public class YahooParseLeaguesServlet extends HttpServlet {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -8517931268191037336L;

	public void doPost(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
		
		String user = req.getParameter("user");

		log("YahooParseLeagues for " + user);
		
		Integer game_key = (req.getParameter("game_key") != null) ? Integer.parseInt((String)req.getParameter("game_key")) : null;

		PersistenceManager pm = PMF.get().getPersistenceManager();
		
        Queue queue = QueueFactory.getDefaultQueue();

        Map<String, String> leagues = (Map<String, String>) req.getAttribute("leagues");
		
		Set<String> keys = leagues.keySet();
		
		if(keys.iterator().hasNext()) {
			for(String key_string : keys) {
				Key key = new KeyFactory.Builder(YahooGames.class.getSimpleName(), game_key)
										.addChild(YahooLeagues.class.getSimpleName(), key_string)
										.getKey();
				try {
					pm.getObjectById(YahooLeagues.class, key);
					log(key_string + " already exists");
				} catch(JDOObjectNotFoundException e) {
					log("Running TaskQueue for " + key);
                    queue.add(url("/admin/yStoreLeague").param("league", key_string).param("runqueue", "true").param("user", user));

				}
			}
		}
		
	}

}
